LINQ ব্যবহার করে ডেটা কুয়েরি করা

Basic CRUD অপারেশন (Basic CRUD Operations) - এন হাইবারনেট (NHibernate) - Microsoft Technologies

320

LINQ (Language Integrated Query) হল একটি শক্তিশালী ফিচার যা .NET Framework এর অংশ এবং এটি আপনাকে কোডের মধ্যেই ডেটাবেস, XML, অথবা অন্যান্য ডেটা সোর্সের উপর কুয়েরি করতে সাহায্য করে। NHibernate এর সাথে LINQ ব্যবহারের মাধ্যমে আপনি ডেটাবেসে কুয়েরি করতে পারেন, যেখানে SQL কোড লিখতে হবে না, বরং C# কোডের মধ্যে LINQ কুয়েরি সিনট্যাক্স ব্যবহার করা যাবে।


1. LINQ এর মাধ্যমে ডেটা কুয়েরি করতে কেন ব্যবহার করবেন?

LINQ ব্যবহার করার কিছু সুবিধা হলো:

  • টাইপ সেফটি: LINQ কম্পাইল টাইমে ডেটা টেবিলের কাঠামো চেক করতে পারে, যার ফলে রান টাইমে ভুল হওয়ার সম্ভাবনা কমে যায়।
  • অন্তর্নির্মিত সিম্পল সিঙ্কট্যাক্স: LINQ এর সিঙ্কট্যাক্স খুবই সহজ এবং ক্লিন, যা ডেটাবেস কুয়েরি লেখা অনেক সহজ করে তোলে।
  • ডায়নামিক ডেটা কুয়েরি: কোডে ডেটা কুয়েরি করাটা খুবই ফ্লেক্সিবল এবং সহজ হয়।

2. LINQ এর মাধ্যমে কুয়েরি করার জন্য প্রাথমিক সেটআপ

LINQ ব্যবহারের জন্য, প্রথমে আপনাকে NHibernate.Linq প্যাকেজটি ইনস্টল করতে হবে। এটি LINQ কুয়েরি লেখার সুবিধা দেয়।

NuGet প্যাকেজ ইনস্টল:

Install-Package NHibernate.Linq

এটা ইনস্টল করার পর, আপনি NHibernate.Linq নেমস্পেসটি ব্যবহার করতে পারবেন, যা LINQ কুয়েরি করতে সহায়তা করে।


3. LINQ কুয়েরি উদাহরণ

ধরা যাক, আপনার একটি Employee ক্লাস রয়েছে যা ডেটাবেসের Employee টেবিলের সাথে ম্যাপিং করা। এখন আপনি LINQ ব্যবহার করে এই টেবিল থেকে ডেটা কুয়েরি করতে চান।

Employee ক্লাস উদাহরণ:

public class Employee
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual int Age { get; set; }
    public virtual string Department { get; set; }
}

LINQ কুয়েরি উদাহরণ:

ধরা যাক, আপনি Employee টেবিল থেকে সমস্ত কর্মচারী যাদের বয়স ৩০ এর উপরে, তাদের ডেটা দেখতে চান।

using NHibernate;
using NHibernate.Linq;
using System;
using System.Linq;

public class EmployeeService
{
    private readonly ISession session;

    public EmployeeService(ISession session)
    {
        this.session = session;
    }

    public void GetEmployeesAbove30()
    {
        // LINQ কুয়েরি ব্যবহার করে কর্মচারীদের তালিকা ফিল্টার করা
        var employees = session.Query<Employee>()
                               .Where(e => e.Age > 30)
                               .OrderBy(e => e.Name)
                               .ToList();

        // ফলাফল প্রিন্ট করা
        foreach (var employee in employees)
        {
            Console.WriteLine($"Id: {employee.Id}, Name: {employee.Name}, Age: {employee.Age}");
        }
    }
}

এখানে:

  • session.Query<Employee>(): এটি Employee টেবিল থেকে ডেটা কুয়েরি করার জন্য সেশন তৈরি করে।
  • Where(e => e.Age > 30): এটি LINQ এর Where ক্লজ যা ৩০ বছরের বেশি বয়সের কর্মচারী ফিল্টার করবে।
  • OrderBy(e => e.Name): এটি কর্মচারীদের নাম অনুসারে সাজাবে।
  • ToList(): এটি কুয়েরির ফলাফল তালিকায় রূপান্তর করবে।

এই কোডটি সঠিকভাবে চললে, এটি ডেটাবেস থেকে ৩০ এর উপরের বয়সের সকল কর্মচারীর নাম এবং বয়স কনসোল লগে প্রদর্শন করবে।


4. JOIN কুয়েরি উদাহরণ

LINQ এর মাধ্যমে আপনি ডেটাবেসের একাধিক টেবিলের মধ্যে সম্পর্কিত ডেটা JOIN করতে পারেন। উদাহরণস্বরূপ, যদি আপনার Department নামের একটি টেবিল থাকে, যার সাথে Employee টেবিলের সম্পর্ক থাকে, তবে আপনি LINQ ব্যবহার করে JOIN কুয়েরি করতে পারবেন।

Department ক্লাস উদাহরণ:

public class Department
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}

LINQ JOIN কুয়েরি উদাহরণ:

public void GetEmployeesWithDepartment()
{
    var employeesWithDepartments = session.Query<Employee>()
                                          .Join(session.Query<Department>(),
                                                emp => emp.Department,
                                                dept => dept.Name,
                                                (emp, dept) => new
                                                {
                                                    EmployeeName = emp.Name,
                                                    DepartmentName = dept.Name
                                                })
                                          .ToList();

    foreach (var employee in employeesWithDepartments)
    {
        Console.WriteLine($"Employee: {employee.EmployeeName}, Department: {employee.DepartmentName}");
    }
}

এখানে:

  • Join(): এটি দুটি টেবিলকে যুক্ত করার জন্য ব্যবহৃত হয়।
  • emp => emp.Department এবং dept => dept.Name: এখানে Employee এবং Department টেবিলের মধ্যে সম্পর্কযুক্ত ক্ষেত্রগুলো নির্ধারণ করা হয়েছে।

5. LINQ এর অন্যান্য কার্যকরী পদ্ধতি

  • FirstOrDefault(): একটি ফলাফল ফেরত দেয় বা কোনো ফলাফল না থাকলে ডিফল্ট মান ফেরত দেয়।
  • Count(): একটি টেবিলের মধ্যে মোট কতগুলো রেকর্ড আছে তা গণনা করে।
  • Distinct(): ডুপ্লিকেট রেকর্ড ফিল্টার করে।
  • GroupBy(): ডেটাকে গ্রুপ করে এবং গ্রুপের ভিত্তিতে কুয়েরি করে।
  • Take() এবং Skip(): ডেটার নির্দিষ্ট অংশ (Paginate) রিটার্ন করে।

6. LINQ এবং SQL কোয়েরি পারফরম্যান্স

LINQ কুয়েরি চালানোর সময়, NHibernate এটি SQL এ কনভার্ট করে। LINQ কুয়েরি সাধারণত SQL Query তে রূপান্তরিত হয় এবং তারপর ডেটাবেসে চলে। তবে কিছু ক্ষেত্রে, LINQ কুয়েরি পারফরম্যান্সের জন্য আরও অপটিমাইজেশন প্রয়োজন হতে পারে। সেক্ষেত্রে, Fetch Join বা Projection কৌশলগুলি ব্যবহার করা যেতে পারে, যা কুয়েরি অপটিমাইজ করতে সহায়ক।


LINQ এর মাধ্যমে আপনি NHibernate ব্যবহার করে ডেটাবেসে খুব সহজেই কুয়েরি করতে পারেন এবং এতে কোডের কার্যকারিতা এবং পাঠযোগ্যতা বাড়ে। NHibernate এবং LINQ একত্রে ব্যবহারের মাধ্যমে, আপনি শক্তিশালী এবং স্কেলেবল ডেটাবেস কুয়েরি তৈরি করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...